package cn.itcast.dtx.notifymsg.pay.server.impl;

import cn.itcast.dtx.notifymsg.pay.dao.AccountPayDao;
import cn.itcast.dtx.notifymsg.pay.entity.AccountPay;
import cn.itcast.dtx.notifymsg.pay.server.AccountPayService;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author misterWei
 * @create 2020年02月17号:13点13分
 * @mailbox mynameisweiyan@gmail.com
 */
@Service
@Slf4j
public class AccountPayServiceImpl implements AccountPayService {

    @Autowired
    private AccountPayDao accountPayDao;

    @Resource
    private RocketMQTemplate rocketMQTemplate;


    /**
     * 该方法用来插入支付记录,发送消息通知
     * @param accountPay
     * @return
     */
    @Override
    public AccountPay insertAccountPay(AccountPay accountPay) {
       // 标识是成功字段
        accountPay.setResult("success");
        int isSuccess = accountPayDao.insertAccountPay(accountPay.getId(), accountPay.getAccountNo(), accountPay.getPayAmount(), accountPay.getResult());
        if (isSuccess > 0) {
            rocketMQTemplate.convertAndSend("dtx-notifymsg-pay-topic",accountPay);
            return accountPay;
        }

        return null;
    }

    /**
     * 对外提供一个对外的查询结果,用来第二种消息通知
     * @param txNo
     * @return
     */
    @Override
    public AccountPay getAccountPay(String txNo) {
        return accountPayDao.findByIdTxNo(txNo);
    }
}
